\chapter{Introducci'on}
Con este manual se prentende explicar todo lo relacionado al proyecto de la
construcci'on de una p'agina web mediante la utilizaci'on de
Python \footnote{http://www.python.org/} y el excelente framework
\footnote{Un framework es una estructura de soporte definida en la cual otro
proyecto de software puede ser organizado y desarrollado.} (desarrollado en este
mismo lenguaje) TurboGears \footnote{http://www.turbogears.org/}.

Trataremos de explicar todo lo referente al proyecto desde c'omo se conforma
la estructura de las tablas de la base de datos hasta qu'e realiza cada
funci'on espec'ificamente.

La realizaci'on del proyecto se divide en tres grandes partes: {\em Modelo,
Vista y Controlador} \footnote{Es un patr'on de arquitectura de software que
separa los datos de una aplicaci'on, la interfaz de usuario, y la l'ogica de
control en tres componentes distintos.} las cuales explicaremos a medida que
vayamos avanzando en cada una de las secciones de este
manual.

\section{Python}
\subsection{Introducci'on}
Python es un lenguaje de programaci'on orientado a objetos, el cual puede
ser utilizado por muchas clases desarrolladores de software. Este ofrece un gran
soporte para la integraci'on con otros leguajes y herramientas, trae consigo
una gran biblioteca est'andar, y puede ser aprendido en pocos d'ias.

Python corre bajo Windows, Linux/Unix, Max OS X, OS/2, Amiga, Palm Hanhelds y
tel'efonos m'oviles Nokia. Es distribuido bajo una licencia de c'odigo abierto
lo cual es de uso {\em libre} incluso para productos comerciales.

\subsection{Instalaci'on}
C'omo nosotros trabajamos bajo GNU/Linux Kubuntu 7.04 no es necesario hacer nada
ya que viene instalado por defecto con nuestro sistema. Pero igualmente existen
varias formas de hacer esto bajo otras distros de Linux. La forma gen'erica de
hacerlo es descargar \footnote{http://www.python.org/download/} las fuentes
del lenguaje y compilarlo. Actualmente se encuentra la veris'on {\em 2.5.1} de
este.

Si nos encontramos sobre un sistema Windows, descargamos la versi'on correcta
para este desde la misma web y seguimos los pasos del instalador.

En este art'iculo todo de lo que hablemos ser'a probado bajo la versi'on de
Linux que hemos citado, y los pasos a seguir que se mencionen en otros
sistemas quiz'as varien algo.

Para comprobar que la instalaci'on se ha hecho con 'exito, abrimos una consola
y tipeamos {\em python}; lo que debe producir algo similar a esto:

\begin{verbatim}
[manuel] [~]$ python
Python 2.5.1 (r251:54863, Aug 17 2007, 18:41:48)
[GCC 4.1.3 20070812 (prerelease) (Ubuntu 4.1.2-15ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
\end{verbatim}

\section{TurboGears}
\subsection{Introducci'on}
TurboGears es un framework desarrollado en Python para la creaci'on r'apida de
aplicaciones webs. Contiene widgets, como ser tablas y campos de entrada de
textos disponibles que nos permiten un r'apido camino hacia la aplicaci'on en
su estado final.

'Este est'a dise~nado siguiendo el patr'on MVC
\footnote{Modelo-Vista-Controlador}, el cual separa el dise~no de la
aplicaci'on web en tres roles diferentes para construir un proyecto. Nuestra
aplicaci'on consiste en desarrollar lo que se encuentra en las cajas que
contiene la palabra ''Your \ldots'' en la Figura ~\ref{fig:thebigpicture}.

\begin{figure}[ht]
\centering
\includegraphics[scale=0.5]{images/fig-04.eps}
\caption{{\small La gran im'agen}}
\label{fig:thebigpicture}
\end{figure}

TurboGears trabaja con una base de datos SQL la cual es {\em mapeada} por una
biblioteca muy popular ultimamente, llamada SQLObject \footnote{es un popular
gestor de objetos relacionales para proveer una interfaz hacia la base de datos,
vinculando las tablas como clases, las filas como instancias, y las columnas
como atributos.}. Esta nos permite crear todo tipo de tablas, seleccionar la
informaci'on que deseemos y dem'as, sin escribir ninguna sentecia SQL.

Este framework utiliza mucho lo que en Python se conoce como {\em decoradores}
\footnote{http://wiki.python.org/moin/PythonDecoratorLibrary}; en el
desarrollo de la web los utilizamos para poder vincular las direcciones de la
{\em barra de direcciones} con los m'etodos apropiados para cada una de estas,
por ejemplo.

\subsection{Instalaci'on}
Antes de empezar debemos instalar TurboGears (actualmente se encuentra
disponible la versi'on 1.0). Para esto descargamos el archivo
{\em http://www.turbogears.org/download/tgsetup.py} y luego en una consola
hacemos:

\begin{verbatim}
[manuel] [~]$ python tgsetup.py
\end{verbatim}

Al ejecutar este comando descarga e instala todo lo necesario para poder
empezar a utilizar TurboGears perfectamente. Luego de instalar todo
correctamente para comenzar un proyecto hacemos:

\begin{verbatim}
[manuel] [~]$ tg-admin quickstart
Enter project name: wwwpayaso
Enter package name [wwwpayaso]:
Do you need Identity (usernames/passwords) in this project? [no]
\end{verbatim}

Lo que nos crea un proyecto llamado {\em wwwpayaso}, que es el nombre que
nosotros le dimos. Este comando genera toda una estructura de directorios y
archivos para que podamos comenzar a trabajar facilmente. En los cap'itulos
posteriores volveremos sobre todo esto.